package com.wlcorp.forcazamis.business.stock;

import java.util.List;

import com.wlcorp.forcazamis.domain.stock.Stock;
import com.wlcorp.forcazamis.domain.stock.StockFitting;
import com.wlcorp.forcazamis.domain.stock.StockProduct;
import com.wlcorp.forcazamis.domain.stock.StockProductDetail;
import com.wlcorp.forcazamis.exception.ServiceException;

public interface IStockService {
	public List<Stock> getStockList(Stock stock) throws ServiceException;
	public Stock getStockById(Long stockId) throws ServiceException;
	public void deleteStock(Stock stock) throws ServiceException;
	public void saveStock(Stock stock) throws ServiceException;
	public void updateStock(Stock stock) throws ServiceException;
	public Long getMaxStockId() throws ServiceException;
	public Long getStockCount(Stock stock) throws ServiceException;
	public void drawbackStock(Stock stock) throws ServiceException;
	
	public List<StockProduct> getStockProductList(StockProduct stockProduct)throws ServiceException;
	public StockProduct getStockProductById(Long stockProductId)throws ServiceException;
	public void deleteStockProduct(StockProduct stockProduct)throws ServiceException;
	public void saveStockProduct(StockProduct stockProduct) throws ServiceException;
	public List<StockProduct> getStockProductListByStockId(Long stockId) throws ServiceException;
	public void updateStockProduct(StockProduct stockProduct) throws ServiceException;
	public Long getMaxStockProductId() throws ServiceException;
	
	public List<StockFitting> getStockFittingList(StockFitting stockFitting)throws ServiceException;
	public StockFitting getStockFittingById(Long stockFittingId)throws ServiceException;
	public void deleteStockFitting(StockFitting stockFitting)throws ServiceException;
	public void saveStockFitting(StockFitting stockFitting) throws ServiceException;
	
	public Stock getStockByStockCodeAndFactoryId(String stockCode, Long factoryId)throws ServiceException;
	
	public List<StockProductDetail> getStockProductDetailList(StockProductDetail stockProductDetail)throws ServiceException;
	public StockProductDetail getStockProductDetailById(Long stockProductDetailId)throws ServiceException;
	public void deleteStockProductDetail(StockProductDetail stockProductDetail)throws ServiceException;
	public void saveStockProductDetail(StockProductDetail stockProductDetail) throws ServiceException;
	
	public List<StockProductDetail> getListByCondition(StockProductDetail stockProductDetail)throws ServiceException;
	public Long getStockProductDetailCount(StockProductDetail stockProductDetail) throws ServiceException;
}
